package org.shop.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.List;

import org.shop.dao.UserDao;
import org.shop.entity.User;
import org.shop.util.DBUtil;

/**
 * UserDao接口的实现类 - 接口的其中的一种实现（方案）
 * 
 * @author Administrator
 *
 */
public class UserDaoImpl implements UserDao {

	@Override
	public int insertUser(User user) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public int deleteUser(int id) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public int updateUser(User user) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public List<User> selectAllUser() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public User selectUserById(int id) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public User selectUser(String username) {
		User user = null;

		// 第一：定义操作数据库的SQL语句
		String sql = "select * from [user] where username=?";

		// 第二：获取连接对象 - 导包：ctrl + shift + o
		Connection conn = DBUtil.getConnection();

		// 第三：获取语句对象
		PreparedStatement pstmt = null;
		ResultSet rst = null;
		try {
			pstmt = conn.prepareStatement(sql);

			// 第四：填充SQL语句
			pstmt.setString(1, username);

			// 第五：执行SQL语句（更新操作、查询操作）
			rst = pstmt.executeQuery();

			// 第六：处理执行结果
			if (rst.next()) {
				// 1.获取当前行中，各字段的数据 - 结果集对象.getXxx(下标)
				int id = rst.getInt(1);
				// String username = rst.getString(2) ;
				String password = rst.getString(3);
				String level = rst.getString(4);
				String image = rst.getString(5);
				String phone = rst.getString(6);
				Timestamp regTime = rst.getTimestamp(7);
				int status = rst.getInt(8);

				// 2.创建实体对象
				user = new User();

				// 3.初始化对象 - 把以上读取的各列数据，封装到实体对象中
				user.setId(id);
				user.setUsername(username);
				user.setPassword(password);
				user.setLevel(level);
				user.setImage(image);
				user.setPhone(phone);
				user.setRegTime(regTime);
				user.setStatus(status);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			// 第七：关闭对象
			DBUtil.close(rst, pstmt, conn);
		}
		return user;
	}

	@Override
	public int updateUser(int id, String filename) {
		int r = 0;

		// 第一：定义操作数据库的SQL语句
		String sql = "update [user] set image=? where id=?";

		// 第二：获取连接对象 - 导包：ctrl + shift + o
		Connection conn = DBUtil.getConnection();

		// 第三：获取语句对象
		PreparedStatement pstmt = null;
		try {
			pstmt = conn.prepareStatement(sql);

			// 第四：填充SQL语句
			pstmt.setString(1, filename);
			pstmt.setInt(2, id);

			// 第五：执行SQL语句（更新操作、查询操作）
			r = pstmt.executeUpdate();

			// 第六：处理执行结果

		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			// 第七：关闭对象
			DBUtil.close(null, pstmt, conn);
		}
		return r;
	}

}
